package model;

import java.util.ArrayList;

import model.interfaces.Artikel;
import model.interfaces.Lidmaatschap;
import model.interfaces.Visitor;
import model.lidmaatschap.Kind;
import model.lidmaatschap.Rustend;
import model.lidmaatschap.Volwassen;

public class Lid implements Visitor {
	
	private String naam;
	private int leeftijd;
	private String adres;
	private Lidmaatschap lidmaatschap;
	private ArrayList<Artikel> artikelen;
	
	public Lid(String naam, int leeftijd, String adres){
		this.naam = naam;
		this.leeftijd = leeftijd;
		this.adres = adres;
		artikelen = new ArrayList<Artikel>();
		if(leeftijd < 18){
			lidmaatschap = new Kind();
		} else {
			lidmaatschap = new Volwassen();
		}
	}

	public String getNaam() {
		return naam;
	}

	public void setNaam(String naam) {
		this.naam = naam;
	}

	public int getLeeftijd() {
		return leeftijd;
	}

	public void setLeeftijd(int leeftijd) {
		this.leeftijd = leeftijd;
	}

	public String getAdres() {
		return adres;
	}
	
	public void addArtikel(Artikel artikel){
		artikelen.add(artikel);
	}

	public void setAdres(String adres) {
		this.adres = adres;
	}

	public Lidmaatschap getLidmaatschap() {
		return lidmaatschap;
	}

	public void setLidmaatschap(Lidmaatschap lidmaatschap) {
		this.lidmaatschap = lidmaatschap;
	}

	public ArrayList<Artikel> getArtikelen() {
		return artikelen;
	}

	@Override
	public double visit(Rustend r) {
		return r.getContributie();
	}

	@Override
	public double visit(Volwassen v) {
		return v.getContributie();
	}

	@Override
	public double visit(Kind k) {
		return k.getContributie();
	}

	@Override
	public double visit(Lidmaatschap l) {
		return l.getContributie();
	}

}
